module pe.managed.metadata { export class TableCompletionReader { constructor(private _tableStream: TableStream, private _metadataStreams: MetadataStreams) { this.lookupResolutionScope = this._createLookup(TableReader.resolutionScopeTables);
this.lookupTypeDefOrRef = this._createLookup(TableReader.typeDefOrRefTables);
readString(index: number): string { return this._tableStream.stringIndices[index];
readGuid(index: number): string { return this._metadataStreams.guids[index];
copyFieldRange(fields: FieldInfo[], start: number, end?: number) { var table = this._tableStream.tables[0x04];
if (!end && typeof (end) === "undefined")
for (var i = start; i < end; i++) { fields.push(fieldRow.def);
copyMethodRange(methods: MethodInfo[], start: number, end?: number) { var table = this._tableStream.tables[0x06];
if (!end && typeof (end) === "undefined")
for (var i = start; i < end; i++) { var methodRow = table[i];
methods.push(methodRow.def);
copyParamRange(parameters: ParameterInfo[], start: number, end: number) { var table = this._tableStream.tables[metadata.TableKind.ParameterDefinition];
for (var i = start; i < end; i++) { var parameterRow = table[i];
parameters.push(parameterRow.def);
lookupResolutionScope: (codedIndex: number) => any;
lookupTypeDefOrRef: (codedIndex: number) => TypeReference;
private _createLookup(tables: number[]): (codedIndex: number) => any { var tableKindBitCount = calcRequredBitCount(tables.length);
return (codedIndex: number) => { var rowIndex = codedIndex >> tableKindBitCount;
var tableKind = codedIndex - (rowIndex << tableKindBitCount);
var table: any[] = this._tableStream.tables[tableKind];
var row = table[rowIndex];
resolveTypeReference(resolutionScope: any, namespace: string, name: string): Type { readFieldSignature(field: FieldInfo, blobIndex: number) {